<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
class Array_to_json {

			public function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
				{
					static $recursive_counter = 0;
					if (++$recursive_counter > 1000) {
					die('possible deep recursion attack');
					}
					foreach ($array as $key => $value) {
						if (is_array($value)) {
							$this->arrayRecursive($array[$key], $function, $apply_to_keys_also);
						} else {
							$array[$key] = $function($value);
						}
						if ($apply_to_keys_also && is_string($key)) {
							$new_key = $function($key);
							if ($new_key != $key) {
							$array[$new_key] = $array[$key];
							unset($array[$key]);
							}
						}
					}
					$recursive_counter--;
				}
				public function JSON($array) {
					$this->arrayRecursive($array, 'urlencode', true);
					$json = json_encode($array);
					return urldecode($json);
				}
}